/* app_inc.h */
#ifndef __APP_INC_H__
#define __APP_INC_H__

#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>

#include "hal_lpuart.h"
#include "hal_lpspi.h"
#include "hal_edma.h"
#include "hal_lpit.h"
#include "hal_adc.h"
#include "hal_lptmr.h"
#include "hal_ftm.h"

#include "bsp_config.h"

#include "drv_lpspi_edma.h"
#include "mpu9250_lpspi_edma.h"
#include "kalman_filter.h"
#include "ble_xfer_lpuart.h"
#include "ws2812b_gpio.h"
#include "ws2812b_lpit_edma.h"

#include "motor_encoder_ftm.h"
#include "motor_balance_ctrl.h"

#include "rc_demodulator_ftm.h"

/*
* 注册表信息-全局常量
*/

/* LPITx. */
#define APP_LPIT_MPU9250_CHANNEL  0U /* 用于触发姿态传感器定期更新数据的通道 */
#define APP_LPIT_BATTERY_CHANNEL  1U /* 用于触发电池电压定期更新数据的通道 */
#define APP_LPIT_BLE_TX_INFO_CHANNEL  2U /* 触发向BLE的App软件同步信息的周期触发通道 */
#define APP_LPIT_RGB_CONTROL_CHANNEL  3U /* 用于产生RGBLED的控制时序 */

/*
* 注册表信息-全局变量
*/
typedef struct
{
    /* 电机 */
    int32_t MotorLeftEncoderValue;
    int32_t MotorRightEncoderValue;

    /* 电池 */
    uint32_t BattMonitorVoltageAdcValue; /* ADC的直接采样值 */
    uint32_t BattMonitorVoltagePercentage; /* 通过ADC转换得来的电池电压在安全范围的百分比 */

    /* 倾角 */
    int32_t AngleValue; /* 为了保留原角度值中更多的有效数字，此处为实际值乘以1000 */
} AppInfo_T;

typedef struct
{
	int32_t MotorTargetSpeedValue; /* PID复合参数，对应小车的行进速度 */
} MotorInfo_T;

extern AppInfo_T GlobalAppInfoStruct;
extern MotorInfo_T GlobalMotorInfoStruct;

#endif /* __APP_INC_H__ */

